#!/usr/bin/env bash
#

# https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs
# https://www.gnu.org/software/parted/manual/html_node/set.html

while true; do
    echo -en "| Выберите один из вариантов:\n"
    echo -en "| Оставьте поле пустым для выбора по умолчанию: ${GREEN}Без отдельного раздела HOME\n${NORMAL}"
    echo -en "----------------------------------------------------------------------\n"
    echo -en "| 1 - Без отдельного раздела HOME\n| 2 - С отдельным разделом HOME\n"
    read -r -p "| Ваш выбор (1/2): >>> " home_type
    case ${home_type} in
        1 | "")
            echo "| Ваш выбор - Без отдельного раздела HOME"
            echo -en "| Очистка диска ${archdisk}...\n"
            wipefs -af /dev/${archdisk} &>/dev/null
            sleep 1
            #-------
            echo -en "| Создание таблицы разделов на диске ${archdisk}...\n"
            parted -s /dev/${archdisk} mklabel gpt
            sleep 1
            #-------
            echo -en "| Создание раздела ESP (EFI System partition (C12A7328-F81F-11D2-BA4B-00A0C93EC93B)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart esp fat32 1MiB 257MiB
            parted -s /dev/${archdisk} set 1 esp on
            sleep 1
            #-------
            echo -en "| Создание раздела XBOOTLDR (Linux Extended Boot Loader (BC13C2FF-59E6-4262-A352-B275FD6F7172)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart xbootldr fat32 257MiB 769MiB
            parted -s /dev/${archdisk} set 2 bls_boot on
            sleep 1
            #-------
            echo -en "| Создание системного раздела (Linux Root partition (4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart root ext4 769MiB 100%
            parted -s /dev/${archdisk} type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
            #-------
            if [[ "${archdisk}" =~ "nvme" ]]; then
                partition1=${archdisk}p1
                partition2=${archdisk}p2
                partition3=${archdisk}p3
            else
                partition1=${archdisk}1
                partition2=${archdisk}2
                partition3=${archdisk}3
            fi
            break;;
        2)
            echo "| Ваш выбор - С отдельным разделом HOME"
            echo -en "| Очистка диска ${archdisk}...\n"
            wipefs -af /dev/${archdisk} &>/dev/null
            sleep 1
            #-------
            echo -en "| Создание таблицы разделов на диске ${archdisk}...\n"
            parted -s /dev/${archdisk} mklabel gpt
            sleep 1
            #-------
            echo -en "| Создание раздела ESP (EFI System partition (C12A7328-F81F-11D2-BA4B-00A0C93EC93B)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart esp fat32 1MiB 257MiB
            parted -s /dev/${archdisk} set 1 esp on
            sleep 1
            #-------
            echo -en "| Создание раздела XBOOTLDR (Linux Extended Boot Loader (BC13C2FF-59E6-4262-A352-B275FD6F7172)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart xbootldr fat32 257MiB 769MiB
            parted -s /dev/${archdisk} set 2 bls_boot on
            sleep 1
            #-------
            echo -en "| Создание системного раздела (Linux Root partition (4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart root ext4 769MiB 33537MiB
            parted -s /dev/${archdisk} type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
            #-------
            echo -en "| Создание домашнего раздела (Linux Home partition (933AC7E1-2EB4-4F13-B844-0E14E2AEF915)) на диске ${archdisk}...\n"
            parted -s --align optimal /dev/${archdisk} mkpart home ext4 33537MiB 100%
            parted -s /dev/${archdisk} set 4 linux-home on
            #-------
            if [[ "${archdisk}" =~ "nvme" ]]; then
                partition1=${archdisk}p1
                partition2=${archdisk}p2
                partition3=${archdisk}p3
                partition4=${archdisk}p4
            else
                partition1=${archdisk}1
                partition2=${archdisk}2
                partition3=${archdisk}3
                partition4=${archdisk}4
            fi
            break;;
    esac
done
